package com.schedualnew.mq.constvalue;

import lombok.Getter;

import java.util.Arrays;

/**
 * @author ljy aka ryan
 * @date 2022/6/15 19:15
 * @description TODO
 */
@Getter
public enum ActTypeConstValue {

//    01开单、02审核、03收费、
//    04退费、05申请单登记、06申请单执行、
//    07报告生成、08报告审核、09报告发布、
//    10撤销登记、11报告撤回、12护士核对、
//    13申请单取消、14体检质控锁定、15体检指控取消锁定、
//    16撤销执行、17采图完成、18已预约、19取消预约
// PS35013（申请单状态变更接口）添加以下三种状态：20排队叫号系统报到、21排队叫号系统检查完成22排队叫号系统取消报到


//    DEL_ITEM("C"), 删除预约
//    LOCK("L"),   锁定
//    CONFIRM("0"), 确认申请
//    UPDATE("1"), 预约
//    CANCEL("2"), 取消预约
//    SIGN("3"), 签到
//    DEL_APPLY("4"), 删除申请
//    CANCEL_SIGN("5"), 取消签到
//    EXAM("6"), 检查
//    NO_REGULAR("7"), 没有规则
//    SCHE_PRINT("8"), 预约打印
//    INVENTORY("9"), 清单
//    SIGN_PRINT("10"),  签到打印
//    NOTICE_AFFIRM("11"), 确认通知
//    EDIT_APPLY("99");  编辑申请

//    switch (status) {
//        case "01": {
//            return "已锁定";
//        }
//        case "02": {
//            return "已申请";
//        }
//        case "04": {
//            return "已退回";
//        }
//        case "06":
//        case "08": {
//            return "已预约";
//        }
//        case "10": {
//            return "已报到";
//        }
//        case "40": {
//            return "已检查";
//        }
//        case "60": {
//            return "初步报告";
//        }
//        case "70": {
//            return "确认报告";
//        }
//        default: {
//            return "未预约";
//        }
//    }

    CONFIRM("0", "18", "已预约"),
    UPDATE("1", "18", "已预约"),
    CANCEL("2", "19", "取消预约"),
    DEL_ITEM("C", "13", "申请单取消"),
    /***
     * 签到
     */
    SIGN("10", "05", "申请单登记"),
    CANCEL_SIGN("5", "10", "撤销登记"),
    /**
     * 检查完成
     */
    EXAM("6", "17", "采图完成"),

    REPORT_PUBLISH("6", "09", "报告发布"),
    INVENTORY("04", "04", "退费");


    private final String actType;
    /**
     * -- GETTER --
     *  状态描述
     *
     * @return
     */
    private final String descStatus;
    /**
     * -- GETTER --
     *  状态编码
     *
     * @return
     */
    private final String statusCode;

    ActTypeConstValue(String type, String code, String des) {
        this.actType = type;
        this.statusCode = code;
        this.descStatus = des;
    }


    public static ActTypeConstValue getByActType(String actType) {
        ActTypeConstValue value = Arrays.asList(ActTypeConstValue.values()).stream()
                .filter(x -> actType.equals(x.getActType()))
                .findFirst().orElse(null);

        return value;
    }

    public static ActTypeConstValue getByStatusCode(String statusCode) {
        ActTypeConstValue value = Arrays.asList(ActTypeConstValue.values()).stream()
                .filter(x -> statusCode.equals(x.getStatusCode()))
                .findFirst().orElse(null);

        return value;
    }
}
